package service.validation;

import org.springframework.validation.Errors;

import web.form.SheetView;
import entities.Sheet;
import entities.Status;

/**
 * <p>Validateur de fiches.</p>
 * <p>Cette API permet de tester la validité de fiches :</p>
 * <ul>
 * 	<li>issues du web (SheetView)</li>
 * 	<li>issues des base de données (Sheet)</li>
 * </ul>
 */
public interface ISheetValidator {
	
	/**
	 * Teste la validité d'une SheetView.
	 * Le status de la SheetView est affecté à la nouvelle valeur.
	 * 
	 * @param view la SheetView à tester
	 * @param errors mapping permettant de lier erreurs et messages
	 * @return le status HardError, SoftError ou Valid
	 */
	public Status validate(SheetView view, Errors errors);
	
	/**
	 * Teste la validité d'un champs d'une Sheet.
	 * 
	 * @param value la valeur du champs à tester
	 * @param fieldConfig configuration du champs à tester
	 * @return le status SoftError ou Valid
	 */
	public Status validate(Sheet sheet);
}
